﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using ClsUtilities.MethodInfo;

namespace ClsModel
{
    public class ClsModelCommon
    {
        private SqlConnection conexion;
        private SqlCommand comando;
        private SqlDataAdapter adapter;
        private DataSet ds;
        private MethodResponse respuesta;
        private SqlParameter retrunvalue;
                
        public ClsModelCommon()
        {
            conexion = new SqlConnection();
            conexion.ConnectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=db_ProSystem;Integrated Security=SSPI";
            TestConection();
        }

        private void TestConection()
        {
            try
            {
                conexion.Open();
                conexion.Close();
            }
            catch (SqlException sqex)
            {

            }
            catch (Exception gex)
            { 
            
            }
        }

        public void ejecutaDS()
        { 
        
        }

        public MethodResponse cargarComboBox(String TableName)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                adapter = new SqlDataAdapter(comando);
                ds = new DataSet();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "SEL_CARGA_DTO_CMB_CATALOGOS";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_NOMBRE", TableName);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = adapter.Fill(ds);
                respuesta.ConjuntoDatos = ds;
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;


        }

        private void conexionBD()
        {
            try
            {
                if (conexion.State == System.Data.ConnectionState.Closed)
                {
                    conexion.Open();
                }
            }
            catch (Exception ex)
            { }
        }

        private void desConexionBD() 
        {
            try
            {
                if (conexion.State == System.Data.ConnectionState.Open)
                {
                    conexion.Close();
                }
            }
            catch (Exception ex)
            { }
        }

        public MethodResponse login(String user, String password)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "LOG_TO_APP";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_USER_NAME", user);
                comando.Parameters.AddWithValue("@I_APP_PASSWORD", password);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;
                respuesta.CantFilas = comando.ExecuteNonQuery();
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }

        //***********PACIENTES***********
        public MethodResponse buscarPacientes(String strBusuqeda)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                adapter = new SqlDataAdapter(comando);
                ds = new DataSet();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "SEL_BUSCAR_PACIENTE";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_PARAM_BUSQUEDA", strBusuqeda);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = adapter.Fill(ds);
                respuesta.ConjuntoDatos = ds;
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }

        public MethodResponse buscarPacientes(String strName,String strFs_Name,String strLs_Name)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                adapter = new SqlDataAdapter(comando);
                ds = new DataSet();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "SEL_BUSCAR_PACIENTE_MTL";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_NAME", strName);
                comando.Parameters.AddWithValue("@I_FS_NAME", strFs_Name);
                comando.Parameters.AddWithValue("@I_LS_NAME", strLs_Name);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = adapter.Fill(ds);
                respuesta.ConjuntoDatos = ds;
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }

       public MethodResponse buscarPacientes()
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                adapter = new SqlDataAdapter(comando);
                ds = new DataSet();

                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "SEL_BUSCAR_PACIENTE";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = adapter.Fill(ds);
                respuesta.ConjuntoDatos = ds;
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;


        }

        public MethodResponse buscarPaciente(String strBusuqeda)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                adapter = new SqlDataAdapter(comando);
                ds = new DataSet();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "SEL_BUSCAR_PACIENTE_COD";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_PARAM_BUSQUEDA", strBusuqeda);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = adapter.Fill(ds);
                respuesta.ConjuntoDatos = ds;
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }

        public MethodResponse guardaPacientes(String FIRST_NAME, String MIDDLE_NAME, String LAST_NAME,
                                      String SEC_LAST_NAME, String AGENCY_COD, DateTime DOB,
                                      int PHYSYCAL_THERAPIST, int PH_THR_ASSIST, String PHONE,
                                      String ADDRES, int OCCUPATION, String MAIL, String CID)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                adapter = new SqlDataAdapter(comando);
                ds = new DataSet();
                String Nombre = FIRST_NAME + " " + MIDDLE_NAME + " " + LAST_NAME + " " + SEC_LAST_NAME;

                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "INS_GRABAR_PACIENTE";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_PA_NAME", Nombre);
                comando.Parameters.AddWithValue("@I_PA_FIRST_NAME", FIRST_NAME);
                comando.Parameters.AddWithValue("@I_PA_MIDDLE_NAME", MIDDLE_NAME);
                comando.Parameters.AddWithValue("@I_PA_LAST_NAME", LAST_NAME);
                comando.Parameters.AddWithValue("@I_PA_SEC_LAST_NAME", SEC_LAST_NAME);
                comando.Parameters.AddWithValue("@I_PA_AGENCY_COD", AGENCY_COD);
                comando.Parameters.AddWithValue("@I_PA_DOB", DOB);
                //comando.Parameters.AddWithValue("@I_PA_PH", PH);
                comando.Parameters.AddWithValue("@I_PA_PHYSYCAL_THERAPIST", PHYSYCAL_THERAPIST);
                comando.Parameters.AddWithValue("@I_PA_PH_THR_ASSIST", PH_THR_ASSIST);
                comando.Parameters.AddWithValue("@I_PA_PHONE", PHONE);
                comando.Parameters.AddWithValue("@I_PA_ADDRES", ADDRES);
                comando.Parameters.AddWithValue("@I_PA_OCCUPATION", OCCUPATION);
                comando.Parameters.AddWithValue("@I_PA_MAIL", MAIL);
                comando.Parameters.AddWithValue("@I_PA_CID", CID);
                comando.Parameters.Add(retrunvalue);

                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = comando.ExecuteNonQuery();
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }

        public MethodResponse guardaPacientes(int COD_PACIENTE, String FIRST_NAME, String MIDDLE_NAME, String LAST_NAME,
                                              String SEC_LAST_NAME, String AGENCY_COD, DateTime DOB,
                                              int PHYSYCAL_THERAPIST, int PH_THR_ASSIST, String PHONE,
                                              String ADDRES, int OCCUPATION, String MAIL, String CID)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                String Nombre = FIRST_NAME + " " + MIDDLE_NAME + " " + LAST_NAME + " " + SEC_LAST_NAME;
                conexionBD();
                comando = new SqlCommand();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "UPD_GRABAR_PACIENTE";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_PA_COD_PATIENT", COD_PACIENTE);
                comando.Parameters.AddWithValue("@I_PA_NAME", Nombre);
                comando.Parameters.AddWithValue("@I_PA_FIRST_NAME", FIRST_NAME);
                comando.Parameters.AddWithValue("@I_PA_MIDDLE_NAME", MIDDLE_NAME);
                comando.Parameters.AddWithValue("@I_PA_LAST_NAME", LAST_NAME);
                comando.Parameters.AddWithValue("@I_PA_SEC_LAST_NAME", SEC_LAST_NAME);
                comando.Parameters.AddWithValue("@I_PA_AGENCY_COD", AGENCY_COD);
                comando.Parameters.AddWithValue("@I_PA_DOB", DOB);
                comando.Parameters.AddWithValue("@I_PA_PHYSYCAL_THERAPIST", PHYSYCAL_THERAPIST);
                comando.Parameters.AddWithValue("@I_PA_PH_THR_ASSIST", PH_THR_ASSIST);
                comando.Parameters.AddWithValue("@I_PA_PHONE", PHONE);
                comando.Parameters.AddWithValue("@I_PA_ADDRES", ADDRES);
                comando.Parameters.AddWithValue("@I_PA_OCCUPATION", OCCUPATION);
                comando.Parameters.AddWithValue("@I_PA_MAIL", MAIL);
                comando.Parameters.AddWithValue("@I_PA_CID", CID);
                comando.Parameters.Add(retrunvalue);

                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = comando.ExecuteNonQuery();
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }



        //***********USERS***********
        public MethodResponse CargarUsers(String strBusuqeda)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                adapter = new SqlDataAdapter(comando);
                ds = new DataSet();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "SEL_BUSCAR_USERS";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_PARAM_BUSQUEDA", strBusuqeda);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = adapter.Fill(ds);
                respuesta.ConjuntoDatos = ds;
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }

        public MethodResponse guardaUsers(String userName, String pass, int estado)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();

                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "INS_GUARDA_USER";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_USER_NAME", userName);
                comando.Parameters.AddWithValue("@I_PASSWORD", pass);
                comando.Parameters.AddWithValue("@I_ESTADO", estado);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = comando.ExecuteNonQuery();
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }

        public MethodResponse guardaUsers(int userCode, String userName, int estado, String pass)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();

                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "UPD_GUARDA_USER";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_USER_CODE", userCode);
                comando.Parameters.AddWithValue("@I_USER_NAME", userName);
                comando.Parameters.AddWithValue("@I_PASSWORD", pass);
                comando.Parameters.AddWithValue("@I_ESTATUS", estado);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = comando.ExecuteNonQuery();
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }

        //***********AGENCIA***********
        public MethodResponse buscarAgencia(String strBusuqeda)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                adapter = new SqlDataAdapter(comando);
                ds = new DataSet();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "SEL_BUSCA_AGENCIA";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_PARAM_BUSQUEDA", strBusuqeda);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = adapter.Fill(ds);
                respuesta.ConjuntoDatos = ds;
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }

        public MethodResponse guardaAgencias(int COD_AGENCIA, String NAME, String PHONE, String ADDRES, String EMAIL, int ESTATUS)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "UPD_GUARDA_AGENCIA";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_AG_COD_AGENCY", COD_AGENCIA);
                comando.Parameters.AddWithValue("@I_AG_NAME", NAME);
                comando.Parameters.AddWithValue("@I_AG_PHONE", PHONE);
                comando.Parameters.AddWithValue("@I_AG_ADDRESS", ADDRES);
                comando.Parameters.AddWithValue("@I_AG_EMAIL", EMAIL);
                comando.Parameters.AddWithValue("@I_AG_STATUS", ESTATUS);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = comando.ExecuteNonQuery();
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;

        }

        public MethodResponse guardaAgencias(String NAME, String PHONE, String ADDRES, String EMAIL, int ESTATUS)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "INS_GUARDA_AGENCIA";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_AG_NAME", NAME);
                comando.Parameters.AddWithValue("@I_AG_PHONE", PHONE);
                comando.Parameters.AddWithValue("@I_AG_ADDRESS", ADDRES);
                comando.Parameters.AddWithValue("@I_AG_EMAIL", EMAIL);
                comando.Parameters.AddWithValue("@I_AG_STATUS", ESTATUS);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = comando.ExecuteNonQuery();
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;

        }

        //***********COLABORADORES***********
        public MethodResponse buscarColaboradores(String strBusuqeda)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                adapter = new SqlDataAdapter(comando);
                ds = new DataSet();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "SEL_BUSCA_WORKERS";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_PARAM_BUSQUEDA", strBusuqeda);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = adapter.Fill(ds);
                respuesta.ConjuntoDatos = ds;
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }

        public MethodResponse ModificaColaborador(int COD_COLABORADORES, String NAME, int OCUPACION, String EMAIL, String ADDRES, String PHONE, int ESTATUS)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "UPD_GUARDA_WORKERS";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_WRK_COD_WORKER", COD_COLABORADORES);
                comando.Parameters.AddWithValue("@I_WRK_NAME", NAME);
                comando.Parameters.AddWithValue("@I_WRK_COD_POSITION", OCUPACION);
                comando.Parameters.AddWithValue("@I_WRK_EMAIL", EMAIL);
                comando.Parameters.AddWithValue("@I_WRK_ADDRESS", ADDRES);
                comando.Parameters.AddWithValue("@I_WRK_PHONE", PHONE);
                comando.Parameters.AddWithValue("@I_WRK_STATUS", ESTATUS);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = comando.ExecuteNonQuery();
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;

        }

        public MethodResponse CrearColaborador(String NAME, int OCUPACION, String EMAIL, String ADDRES, String PHONE, int ESTATUS)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "INS_GUARDA_WORKERS";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_WRK_NAME", NAME);
                comando.Parameters.AddWithValue("@I_WRK_COD_POSITION", OCUPACION);
                comando.Parameters.AddWithValue("@I_WRK_EMAIL", EMAIL);
                comando.Parameters.AddWithValue("@I_WRK_ADDRESS", ADDRES);
                comando.Parameters.AddWithValue("@I_WRK_PHONE", PHONE);
                comando.Parameters.AddWithValue("@I_WRK_STATUS", ESTATUS);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = comando.ExecuteNonQuery();
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;

        }


        //***********PAGINA INICIAL***********
        public MethodResponse guardaEstadoVisita(int codCita, int codpaciente, String estado) 
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "UPD_GUARDA_ESTADO_CITA";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_CODE_CITA", codCita);
                comando.Parameters.AddWithValue("@I_CODE_PATI", codpaciente);
                comando.Parameters.AddWithValue("@I_COMPLETE", estado);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;
                
                respuesta.CantFilas = comando.ExecuteNonQuery();
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        
        }

        public MethodResponse buscarCitasDia()
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                adapter = new SqlDataAdapter(comando);
                ds = new DataSet();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "SEL_BUSCA_CITAS_DEL_DIA";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = adapter.Fill(ds);
                respuesta.ConjuntoDatos = ds;
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }



        //***********APPOINTMETS CITAS***********
        public MethodResponse buscarCalendarioProximo(DateTime fechaInic, int cantSemanas)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                adapter = new SqlDataAdapter(comando);
                ds = new DataSet();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "SEL_BUSCA_DIAS_CALENDARIO";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("@I_FECHA_INICIO", fechaInic);
                comando.Parameters.AddWithValue("@I_SEMANAS", cantSemanas);
                comando.Parameters.Add(retrunvalue);
                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = adapter.Fill(ds);
                respuesta.ConjuntoDatos = ds;
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }

        public MethodResponse guardaCitas(int codPaciente, String descr, string fecha, string hora, DateTime fechaHora)
        {
            respuesta = new MethodResponse(System.Reflection.MethodBase.GetCurrentMethod());

            try
            {
                conexionBD();
                comando = new SqlCommand();
                adapter = new SqlDataAdapter(comando);
                ds = new DataSet();
                retrunvalue = new SqlParameter();
                retrunvalue.Direction = ParameterDirection.ReturnValue;
                retrunvalue.SqlDbType = SqlDbType.Int;
                retrunvalue.ParameterName = "@RETURNVALUE";

                comando.CommandText = "INS_GRABAR_CITAS";
                comando.CommandType = System.Data.CommandType.StoredProcedure;
                comando.Parameters.Add(retrunvalue);

                comando.Parameters.AddWithValue("@I_AP_COD_PATIENT", codPaciente);
                comando.Parameters.AddWithValue("@I_AP_DESCR", descr);
                comando.Parameters.AddWithValue("@I_AP_PROGRAM_DATE", fecha);
                comando.Parameters.AddWithValue("@I_AP_PROGRAM_HOUR", hora);
                comando.Parameters.AddWithValue("@I_AP_PROGRAM_DATETIME", fechaHora);

                comando.Connection = conexion;
                comando.CommandTimeout = 10;

                respuesta.CantFilas = comando.ExecuteNonQuery();
                respuesta.Estado = true;
            }
            catch (Exception ex)
            {
                respuesta.Estado = false;
                respuesta.Execp = ex;
            }
            finally
            {
                desConexionBD();
            }
            return respuesta;
        }
   
    }
}
